package co.edu.eam.laapuesta.ejb;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import co.edu.eam.laapuesta.persistencia.dao.ClienteDAO;
import co.edu.eam.laapuesta.persistencia.entidades.Cliente;
import co.edu.eam.laapuesta.persistencia.entidades.Direccion;
import co.edu.eam.laapuesta.persistencia.idao.ClienteIDAO;

@Stateless
@LocalBean
public class ClienteEJB {
	
	private ClienteIDAO clienteDAO;
	
	@PersistenceContext(name = "LaApuestaJPA")
	private EntityManager entityManager;

	public ClienteEJB() {
		super();
		// TODO Auto-generated constructor stub
	}
	@PostConstruct
	public void posConstructor(){
		clienteDAO=new ClienteDAO(entityManager);
	}
	
	public void registarCliente(int cedula,String nombre,String apellido,String password,String usuario,int telefono,Direccion direccion)throws Exception{
		Cliente x=buscarClienteByCedula(cedula);
		if(x!=null){
			throw new Exception("El cliente con esta cedula ya esta registrado.");
		}else {
			Cliente c=new Cliente();
			c.setApellido(apellido);
			c.setCedula(cedula);
			c.setNombre(nombre);
			c.setDireccion(direccion);
			c.setPassword(password);
			c.setTelefono(telefono);
			c.setUsuario(usuario);
			clienteDAO.registrarCliente(c);
		}	
	}
	
	public void eliminarCliente(int id)throws Exception{
		Cliente x=buscarCliente(id);
		if(x==null){
			throw new Exception("El cliente no existe, verifique.");
		}else {
			clienteDAO.eliminarCliente(x);
			
		}
	}
	public Cliente buscarCliente(int id){
		return clienteDAO.buscarCliente(id);
	}
	public Cliente buscarClienteByUsuario(String usuario){
		return clienteDAO.buscarClienteByUsuario(usuario);
	}
	
	public Cliente buscarClienteByCedula(int cedula){
		return clienteDAO.buscarClienteByCedula(cedula);
	}
	
	public List<Cliente>buscarClienteByNombre(String nombre){
		return clienteDAO.buscarClienteByNombre(nombre);
	}
	
	public List<Cliente>listarClientes(){
		return clienteDAO.listarClientes();
	}
}
